package com.zijie.demo1;
//复习多态
//1.继承
//2.向上转型
//3.重新
//4.通过父类引用，调用父类和子类重写的方法
//完成例子：图型

//抽象类的特点
//1.抽象类是使用abstract修饰的类
//2.抽象类不能实例化
//3.此时在抽象类当中，可以有抽象方法，或者非抽象方法
//4.抽象方法就是被abstract修饰，没有具体的实现。只要包含抽象方法，这个类必须是抽象类。
//5.当一个普通类继承了这个抽象类，必须重写抽象类当中的抽象方法
//6.抽象类存在的最大的意义就是为了被继承
//7.抽象方法不能被private，final，static。所以一定要满足方法重写规则
//8.当一个子类没有抽象的父类方法，可以把当前子类变为abstract修饰
//9.抽象类中可以有构造方法，供子类创建对象时，初始化父类的成员变量


//抽象类和普通类有什么区别？
//1.抽象类不能实例化，普通类可以
//2.抽象类当中，可以包含非抽象类方法和抽象类方法，但是普通类只能包含非抽象方法！


import java.util.Arrays;

public class Test1 implements Comparable{
    final int a=10;//创建时初始化



    public static void main(String[] args) throws CloneNotSupportedException{

    }

    @Override
    public int compareTo(Object o) {
        return 0;
    }
}


//接口：在Java中可以看成是多个类的公共规范，是一种引用数据类型
//1.interface IShap{……}
//2.接口不能被实例化
//3.在new的时候可以选择interface。一般一个java文件放一个class或一个interface
//4.接口中的成员默认是public static final的
//5.接口中的方法不写也默认为public abstract的——接口中的方法不能有具体的实现
//6.从JDK8开始可以写一个default修饰的方法/写一个public static方法
//7.接口中不能有构造方法
//8.接口需要被类实现，使用关键字implements

//接口是一种规范.
//重写的时候子类的访问修饰权限一定要大于等于父类。所以对于接口，子类的访问限定修饰符只能是public


//接口注解：：：：：：：：：：：：：：：：：：：：
//java中只能单继承
//先继承再实现，接口可以实现多个，中间用逗号隔开
//接口相当于撇开了类
//重写关键字===alt+回车
//interface CC extends A,B{……}表示CC这个接口不仅具备了func这个功能，还具备了A和B接口的功能
//注意：：：：：：：：：：：：：：：：：：：：：：：：：：：
//1.类可以继承一个普通类
//2.类可以继承一个抽象类
//3.类可以继承一个普通类/抽象类 同时实现多个接口
//      extends              implements
//4.接口可以通过extends拓展多个接口功能

//在接口当中是不能有静态代码块、实例代码块和构造方法的。


//---------------------------------------------------------------
//目前先认为是在数组中排序，排序器概念、集合排序

//字符串比较：字符串1.equals(字符串2);返回值为boolean
//         字符串1.compareTo(字符串2);返回值为int
//方式1：class Student implements Comparable<Student>
//@Override
//public int compareTo(Student o) {
//    return o.age - this.age;
//}
//Arrays.sort(students);

//方式2：class AgeComparator implements Comparator<Student>
//@Override
//public int compare(Student o1, Student o2) {
//    return o1.age - o2.age;
//}
//Arrays.sort(students,ageComparator);
//快速建包建java文件：demo1.java
//----------------------------------------------------------------



//拷贝Cloneable接口，是1个空接口：标记接口，作用是表示当前接口是可以被克隆的
//Object是所以类的父类-比如之前重写toString可以理解

//深浅拷贝跟方法没关系，与实现的方式有关系

//抽象类和接口的区别？总结一下：

//详细介绍Object类，匿名对象--只用1次

//测试发现，println()中传参不同，底层的方法也不同，Object中打印引用类型，可重写的toString方法